Log-polar Mapping
https://gyazo.com/dbf9d0ca537130a05b075b1279bd5be1
中心に向けて大きさの違う形状が再帰的に並ぶような図形をレイマーチングで描画する手法 やりかた
原文では3次元のLog-polar mappingをしているが、ここでは簡単のため2次元で扱う
code:glsl
const float SCALE = 6.0 / PI;
const float RADIUS = 0.1;
float map(vec2 p) {
// 座標系をlog-polarにする
float r = length(p);
vec2 pt = vec2(log(r), atan(p.y, p.x));
// repetitionする
pt *= SCALE;
pt = fract(pt) - 0.5;
// 距離を出す
float d = length(pt) - RADIUS;
return d * r / SCALE;
}
https://gyazo.com/ce2bf93a146cc15dd1ad792203719a6f